#pragma once

#include <cstddef>
#include <atomic>

namespace viml {

/**
 * 内存管理器 - 跟踪和管理虚拟机中的内存分配
 */
class MemoryManager {
private:
    static std::atomic<size_t> total_allocations;
    static std::atomic<size_t> total_deallocations;
    static std::atomic<size_t> current_allocations;

public:
    // 通知内存分配
    static void notify_allocation();
    
    // 通知内存释放
    static void notify_deallocation();
    
    // 获取统计信息
    static size_t get_total_allocations();
    static size_t get_total_deallocations();
    static size_t get_current_allocations();
    
    // 重置统计信息
    static void reset_statistics();
};

} // namespace viml